﻿using BW.WMS.Core.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BW.WMS.Domain.Entities.Warehouse
{
    /// <summary>
    /// WMS仓库管理—货位实体
    /// </summary>
    public class WMS_Bin:BaseEntity
    {
        /// <summary>
        /// 货位编号 - 用于唯一标识货位
        /// </summary>
        public string BinCode { get; set; } = string.Empty;

        /// <summary>
        /// 货位名称 - 货位的显示名称
        /// </summary>
        public string BinName { get; set; } = string.Empty;

        /// <summary>
        /// 长度 - 货位的物理长度，单位为米
        /// </summary>
        public double Length { get; set; }

        /// <summary>
        /// 宽度 - 货位的物理宽度，单位为米
        /// </summary>
        public double Width { get; set; }   

        /// <summary>
        /// 高度 - 货位的物理高度，单位为米
        /// </summary>
        public double Height { get; set; }

        /// <summary>
        /// 最大承重 - 货位可承受的最大重量，单位为千克
        /// </summary>
        public double MaxWeight { get; set; }

        /// <summary>
        /// 已用容量 - 当前已使用的容量，单位为立方米(m³)
        /// </summary>
        public double UsedVolume { get; set; }

        /// <summary>
        /// 已用重量 - 当前已使用的重量，单位为千克
        /// </summary>
        public double UsedWeight { get; set; }

        /// <summary>
        /// 货位状态 - 表示货位当前的使用状态，对应BinStatusEnum枚举值
        /// 1=空闲，2=占用，3=满载，4=停用，5=锁定
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// 货位类型 - 用于区分不同类型的货位，如"标准货位"、"冷藏货位"等
        /// </summary>
        public string BinType { get; set; } = string.Empty;

        /// <summary>
        /// 排序序号 - 用于在列表中对货位进行排序的数值
        /// </summary>
        public int SortOrder { get; set; }

        /// <summary>
        /// 备注 - 关于该货位的附加说明信息
        /// </summary>
        public string Remark { get; set; } = string.Empty;

        /// <summary>
        /// 所属库位ID - 外键，关联到WMS_Location表
        /// </summary>
        public int LocationId { get; set; }

        /// <summary>
        /// 所属库位 - 导航属性，表示该货位所属的库位
        /// </summary>
        public WMS_Location Location { get; set; }
    }
}
